<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/BasicTemplate.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Rewired Documentation | Best Practices</title>
<!-- InstanceEndEditable -->
<!-- InstanceParam name="isRoot" type="boolean" value="false" -->
<!-- InstanceParam name="wide" type="boolean" value="false" -->
<link href="files/css/styles.css" rel="stylesheet" type="text/css" />
<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="/projects/rewired/files/images/favicon.ico?v=1" />
<!-- Apple Icons -->
<!-- For iPad with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="files/images/favicon_152x152.png?v=1">
<!-- For iPad with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="files/images/favicon_144x144.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="files/images/favicon_120x120.png?v=1">
<!-- For iPhone with high-resolution Retina display running iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="files/images/favicon_114x114.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 7: -->
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="files/images/favicon_76x76.png?v=1">
<!-- For the iPad mini and the first- and second-generation iPad on iOS = 6: -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="files/images/favicon_72x72.png?v=1">
<!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
<link rel="apple-touch-icon-precomposed" href="files/images/favicon_57x57.png?v=1">
</head>

<body>


<div class="container">

    <div class="google-search-bar">
        <script>
          (function() {
            var cx = '007961148920562332911:oocvtwz5jce';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
          })();
        </script>
        <gcse:search></gcse:search>
    </div>

  <div class="content">
	
	
	 
    <div class="page-body">
	
    
         
	    
      	<div class="sidebar-nav">
	        <h4><a href="Documentation.html">Documentation</a></h4>
	        <ul>
	          <li><a href="Overview.html">Overview</a></li>
	          <li><a href="ReleaseNotes.txt">Release Notes</a></li>
          </ul>
	        <strong>Essentials:</strong>
            <ol>
              <li><a href="Installation.html">Installation</a></li>
              <li><a href="QuickStart.html">Quick Start</a></li>
              <li><a href="BasicUsage.html">Basic Usage</a></li>
              <li><a href="Deployment.html">Deployment</a></li>
              <li><a href="BestPractices.html">Best Practices</a></li>
              <li><a href="RewiredEditor.html">Rewired Editor</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs/api-reference" target="_blank">API Reference</a></li>
            </ol>
            <strong>Concepts:</strong>
            <ul>
              <li><a href="InputManager.html">Input Manager</a></li>
              <li><a href="Players.html">Players</a></li>
              <li><a href="Actions.html">Actions</a></li>
              <li><a href="InputBehaviors.html">Input Behaviors</a></li>
              <li><a href="Controllers.html">Controllers</a></li>
              <li><a href="ControllerMaps.html">Controller Maps</a></li>
              <li><a href="ControllerTemplates.html">Controller Templates</a></li>
              <li><a href="MapCategories.html">Map Categories</a></li>
              <li><a href="Layouts.html">Layouts</a></li>
              <li><a href="LayoutManager.html">Layout Manager</a></li>
              <li><a href="MapEnabler.html">Map Enabler</a></li>
              <li><a href="CustomControllers.html">Custom Controllers</a></li>
            </ul>
            <strong>Extras:</strong>
            <ul>
              <li><a href="ControlMapper.html" title="Control Mapper">Control Mapper</a></li>
	          <li><a href="TouchControls.html" title="Touch Controls">Touch Controls</a></li>
              <li><a href="RewiredStandaloneInputModule.html">Rewired Standalone Input Module</a></li>
	          <li><a href="UnityInputOverride.html" title="Unity Input Override">Unity Input Override</a></li>
            </ul>
            <strong>Misc:</strong>
            <ul>
	          <li><a href="ComponentControls.html" title="Component Controls">Component Controls</a></li>
	          <li><a href="PlayerControllers.html" title="Player Controllers">Player Controllers</a></li>
	          <li><a href="InputMapper.html" title="Input Mapper">Input Mapper</a></li>
	          <li><a href="UserDataStore.html" title="User Data Store">User Data Store</a></li>
            </ul>
            <strong>How To's:</strong>
            <ul>
            	<li><a href="HowTos.html">See all topics...</a></li>
            </ul>
            <strong>Help:</strong>
            <ul>
              <li><a href="SupportedControllers.html" title="Supported Controllers">Supported Controllers</a></li>
              <li><a href="Overview.html#tested-platforms" title="Tested Platforms">Tested Platforms</a></li>
              <li><a href="Troubleshooting.html" title="Troubleshooting">Troubleshooting</a></li>
              <li><a href="KnownIssues.html">Known Issues</a></li>
              <li><a href="SpecialPlatformSupport.html" title="Special Platform Support">Special Platform Support</a></li>
	          <li><a href="Examples.html" title="Examples">Examples</a></li>
              <li><a href="Integration.html">Integrations</a></li>
	          <li><a href="Updating.html" title="Updating Rewired">Updating Rewired</a></li>
            </ul>
            <strong>FAQ</strong>
            <ul>
            	<li><a href="FAQ.html">See all topics...</a></li>
            </ul>
            <strong>Unity Help:</strong>
            <ul>
              <li><a href="https://docs.unity3d.com/Manual/" target="_blank">Unity Manual</a></li>
              <li><a href="https://docs.unity3d.com/ScriptReference/" target="_blank">Unity Script Reference</a></li>
              <li><a href="https://unity3d.com/learn/tutorials/modules" target="_blank">Unity Tutorials</a></li>
            </ul>
            <strong>Links:</strong>
            <ul>
              <li><a href="https://guavaman.com/projects/rewired">Rewired Website</a></li>
              <li><a href="https://guavaman.com/projects/rewired/docs">Web Documentation</a></li>
            </ul>
        </div>
        
    
    	<div class="main-body">
	        <div class="logo"><a href="https://guavaman.com/projects/rewired" title="Rewired"><img src="files/images/rewired-logo.png" width="173" height="139" alt="Rewired" /></a></div>
                     
            <h1>
            <!-- InstanceBeginEditable name="PageHeader" -->Best Practices
      <!-- InstanceEndEditable -->
            </h1>
            
			<!-- InstanceBeginEditable name="MainBody" -->

    <h3><a name="input-manager" id="input-manager"></a>Input Manager:</h3>
    <ul>
      <li>Create the Rewired Input Manager as a prefab and  <a href="InputManager.html#rewired-initializer">Rewired Initializer</a> to manage instantiation of the Rewired Input Manager prefabin all your scenes.</li>
    </ul>
<h3><a name="controller-mapping" id="controller-mapping"></a>Controller Mapping:</h3>
    <ul>
      <li><strong>Always make a mapping for the <a href="ControllerMaps.html#gamepad-template">Gamepad Template</a></strong>. The vast majority of players using controllers will be using a gamepad. To save time, map for the Gamepad Template and <a href="SupportedControllers.html">all gamepads recognized by Rewired</a> will just work.</li>
      <li><strong>Always make a mapping for the <a href="ControllerMaps.html#unknown-controllers">Unknown Controller</a></strong>. If a player uses a controller that isn't recognized, they can at least have some kind of input without manual mapping. <a href="ControllerMaps.html#unknown-controllers">Please see this for more information and recommended mapping guidelines</a>.</li>
      <li><strong>Always provide some means for your users to remap their controls.</strong> Many controllers <a href="FAQ.html#addding-controller-definitions">cannot ever be recognized by Rewired due to bad practices by manufacturers</a>. To support these controllers properly and give your users the best experience, you must provide them a way to remap their controls. You can either include <a href="ControlMapper.html">Control Mapper</a> directly in your game or <a href="HowTos.html#controller-mapping-screen">create your own control remapping system</a>.</li>
      </ul>
    <h3><a name="controller-assignment" id="controller-assignment"></a>Controller Assignment:</h3>
    <ul>
      <li><strong>Always provide some means for your users to change controller assignments.</strong> It is especially important if you are making a multi-player game. You cannot know what devices, physical or virtual, will be present on a user's system, appear as Joysticks to Rewired, and be assigned to a Player. Device emulation software (VJoy, DS4Win, SCPToolkit, etc.) and certain device drivers can and frequently do cause problems by creating extra, non-functional virtual devices. Allowing the user to make their own controller assignments solves this issue as well as making it possible for users to swap controllers, etc. You can either include <a href="ControlMapper.html">Control Mapper</a> directly in your game or <a href="HowTos.html#assigning-controllers">create your own system</a>.</li>
      <li><a name="one-player-games" id="one-player-games"></a><strong>If your game is 1-Player:    </strong>        Set <a href="RewiredEditor.html#Settings">Max Joysticks Per Player</a> to 100 so all controllers attached to the system may be used by the player.</li>
    </ul>
<h3><a name="windows" id="windows"></a>Windows Standalone Platform:</h3>
<ul>
  <li><strong>Always enable Use Windows Gaming Input + Use XInput.</strong> Windows Gaming Input provides universal comaptibility with all XInput-compatible  controllers such as Xbox controllers and clones. It also provides support for vibration including trigger vibration, independent trigger values, and support for more than 4 controllers at once with all special features. Also enabling Use XInput allows for falling back to XInput on older systems that do not support Windows Gaming Input. The only exception to this rule would be if your game requires support for more than 4 XBox controllers at once <a href="KnownIssues.html#more-than-4-xbox-controllers">(XInput has a limit of 4)</a>, in which case, Use XInput can be disabled to allow Raw Input to be used as the fallback in case Windows Gaming Input is not available on the system to be able to support more than 4 XBox controllers at once, <a href="KnownIssues.html#more-than-4-xbox-controllers">albeit with caveats</a>.</li>
  </ul>
<h3><a name="steam" id="steam"></a>Steam:</h3>
<ul>
  <li><a href="Troubleshooting.html#steam">Read this important information about Rewired and Steam.</a></li>
  <li><a href="Troubleshooting.html#steam-rewired-setup">Initialize Steam before initializing Rewired.</a></li>
  <li><a href="Troubleshooting.html#steam-controller">Configure the Steam Controller settings correctly in the Steam developer backend.</a></li>
  <li><a href="Troubleshooting.html#steam-controller">Make sure you are using the correct input source(s) for each platform.</a></li>
  <li><a href="Troubleshooting.html#steam-configured-controllers-recommendations">Decide if you want to opt in to Steam controller configuration support for any controllers.</a></li>
  <li>Make sure you have Joystick Maps configured for the <a href="ControllerTemplates.html#gamepad-template">Gamepad Template</a>.</li>
  <li><a href="Troubleshooting.html#steam">See these  topics for more information on Steam and Steam issues.</a><br/>
  </li>
</ul>
<div class="bottom-pager clearfix">
  <a class="back-button" href="Deployment.html" title="Documentation"><span class="button-img"></span>Deployment</a>
  <a class="forward-button" href="RewiredEditor.html" title="Rewired Editor"><span class="button-img"></span>Rewired Editor</a>
</div>

<!-- InstanceEndEditable -->
        </div>
        
    </div>
  <div class="footer clearfix">
   	<p class="left">Copyright &copy;2014-2021 <a href="https://guavaman.com" title="Guavaman Enterprises">Guavaman Enterprises</a>. All rights reserved. No materials may be reproduced without permission.</p>
  	<p class="right"><a href="https://guavaman.com/projects/rewired" title="Return to Rewired Website">Return to Rewired Website</a></p>
  </div>
  <!-- end .content --></div>
  <!-- end .container --></div>
  
  
</body>
<!-- InstanceEnd --></html>
